package com.zyf.project.binaryproto.contract;

import com.zyf.project.binaryproto.specification.DataSpecification;

import java.util.List;

/**
 * <h1>数据契约与特定语言类型的映射</h1>
 *
 * @author Zhou Yifan
 */
public interface DataTypeMapping {

    /**
     * 数据契约的格式标准；
     *
     * @return {@link DataSpecification}
     */
    DataSpecification getSpecification();

    /**
     * 数据契约的接口类型；
     *
     * @return {@link Class}
     */
    Class<?> getContractType();

    /**
     * 字段映射；
     *
     * @return {@link FieldAttributeMapping} 的 {@link List}
     */
    List<FieldAttributeMapping> getFieldMappings();

}
